/* CommLineArgs.cc -- Classe para passar as variáveis da linha de
 * comando.
 *
 * Copyright (C) 2008, Diogo F. S. Ramos <diogo.ramos@usp.br>
 * GEAR - Grupo de Estudos Avançados em Robótica
 * <http://www.sel.eesc.usp.br/gear>
 *
 * This file is part of GEARMedula.
 * 
 * GEARMedula is free software: you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation, version 3 of the
 * License.
 * 
 * GEARMedula is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see
 * <http://www.gnu.org/licenses/>.
 */

#ifndef COMMLINEARGS_HH_
#define COMMLINEARGS_HH_

#include <string>

/** Realiza o parser da linha de comando.

    Para utilizar este objeto deve-se inicia-lo com os parâmetros
    passados pela linha de comando.

    Para cada parâmetro passado há uma função get que retirará o valor
    passado.

 */
class CommLineArgs
{
public:
    CommLineArgs();
    int ParseArgs( int argc, char *argv[] );
    int getServerPort( void );
    int getServerReal();
    int getServerDisplay();
    std::string getSerialPath();
    int getRobotVersionBala( void );
    void printAllOptions();
private:
    /** Porta do servidor. */
    int server_port_;
    /** Informa se o servidor é real ou simulado. */
    int server_real_;
    /** Informa se o servidor utilizará a componente Display ou não. */
    int f_server_display_;
    /** Caminho para a porta serial */
    std::string serial_path_;
    /** Versão do robô a ser controlado */
    int robot_version_bala_;
};
#endif	// COMMLINEARGS_HH_
